The idea of providing uninterrupted media streaming is nothing new. Many attempts have been made to provide uninterrupted media streaming without any glitches or interruptions. However, the methods and apparatus available today primarily rely on directing and redirecting a client (viewer/listener) to the site initially linked, with an expectation that the user will get an interrupted stream of media at least most of the time.
Typically, a client accesses a network, and requests certain media content. In response to the request from the client, a site is contacted for providing the requested media content to the client. In the event of a problem, such as disconnection or congestion, the client is redirected back to the original site for reconnection. Therefore, the recovery provided by such a system is limited to serving the requested media content from a particular site, with an expectation that the server keeps serving the requested media content to the client.
The methods and apparatus available today have numerous common problems. For instance, linking back to the original site is understandably very disruptive for clients, because it requires a network to re-process the original link, causing the loss of continuity. Further, upon re-linking, clients have no choice but to experience the media content from the very beginning even if they only wish to reconnect from the time of disconnection. Some media players and broadcasters provide client-side buffering of a few seconds of data in order to compensate for momentary delays in packet delivery. However, such a feature is only effective with an assigned server, and fails if the server crashes or becomes inaccessible for any reason. None of the methods and apparatus, available today, provide clients with the flexibility of choosing from multiple network sites in the event of a problem or attempt to provide automatic and transparent error recovery.